Multiple Test Cases এর জন্য @DataProvider এর ব্যবহার

TestNG এর মধ্যে টেস্ট ডেটা প্রোভাইডার - টেস্টএনজি (TestNG) - Java Technologies

339

টেস্টএনজি-তে @DataProvider একটি শক্তিশালী ফিচার যা ডেটা ড্রিভেন টেস্টিং (Data-Driven Testing) সাপোর্ট করে। এটি টেস্ট মেথডকে একাধিক ইনপুট দিয়ে চালানোর সুযোগ দেয়।

@DataProvider ব্যবহার করে, একটি টেস্ট মেথড একাধিক সেট ডেটার মাধ্যমে একাধিকবার চালানো সম্ভব, যা কোড পুনরাবৃত্তি কমায় এবং টেস্টিং আরও কার্যকর করে।


@DataProvider এর বৈশিষ্ট্য

  • একই টেস্ট মেথড বিভিন্ন ইনপুট ডেটা দিয়ে চালানো যায়।
  • সহজেই বড় আকারের টেস্ট ডেটা পরিচালনা করা যায়।
  • একাধিক ইনপুট টেস্ট করার জন্য আলাদা টেস্ট মেথড লিখতে হয় না।

@DataProvider এর সিনট্যাক্স

@DataProvider(name = "dataProviderName")
public Object[][] dataProviderMethod() {
    return new Object[][] {
        {dataSet1},
        {dataSet2},
        ...
    };
}

@Test(dataProvider = "dataProviderName")
public void testMethod(Type1 arg1, Type2 arg2, ...) {
    // Test logic here
}

উদাহরণ: @DataProvider ব্যবহার

উদাহরণ ১: সাধারণ ডেটা ড্রিভেন টেস্ট

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataProviderExample {

    @DataProvider(name = "testData")
    public Object[][] provideData() {
        return new Object[][] {
            {"Alice", 25},
            {"Bob", 30},
            {"Charlie", 35}
        };
    }

    @Test(dataProvider = "testData")
    public void testMethod(String name, int age) {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

আউটপুট:

Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 35

উদাহরণ ২: লজিক যাচাই করার জন্য @DataProvider

import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class CalculatorTest {

    @DataProvider(name = "additionData")
    public Object[][] provideAdditionData() {
        return new Object[][] {
            {2, 3, 5},
            {10, 20, 30},
            {15, 15, 30}
        };
    }

    @Test(dataProvider = "additionData")
    public void testAddition(int num1, int num2, int expected) {
        int actual = num1 + num2;
        Assert.assertEquals(actual, expected, "Addition result is incorrect!");
    }
}

আউটপুট: যদি প্রত্যেক ইনপুট সেটের জন্য লজিক সঠিক থাকে, টেস্ট পাস করবে। না হলে ব্যর্থ হবে।


একাধিক @DataProvider পরিচালনা করা

একাধিক @DataProvider ব্যবহার করা সম্ভব। আলাদা আলাদা টেস্ট মেথডে আলাদা @DataProvider অ্যাসাইন করা যায়।

@DataProvider(name = "numbers")
public Object[][] numberProvider() {
    return new Object[][] {{1}, {2}, {3}};
}

@DataProvider(name = "strings")
public Object[][] stringProvider() {
    return new Object[][] {{"Test1"}, {"Test2"}, {"Test3"}};
}

@Test(dataProvider = "numbers")
public void testNumbers(int number) {
    System.out.println("Number: " + number);
}

@Test(dataProvider = "strings")
public void testStrings(String text) {
    System.out.println("Text: " + text);
}

Parameterized @DataProvider

@DataProvider ডায়নামিক প্যারামিটার গ্রহণ করতে পারে। উদাহরণস্বরূপ, যখন নির্দিষ্ট ইনপুট টেস্ট করতে হবে।

@DataProvider(name = "dynamicData")
public Object[][] provideDynamicData(Method method) {
    if (method.getName().equals("testLogin")) {
        return new Object[][] {{"admin", "admin123"}, {"user", "user123"}};
    } else if (method.getName().equals("testSignup")) {
        return new Object[][] {{"newUser", "password1"}};
    }
    return null;
}

@Test(dataProvider = "dynamicData")
public void testLogin(String username, String password) {
    System.out.println("Login with Username: " + username + ", Password: " + password);
}

@Test(dataProvider = "dynamicData")
public void testSignup(String username, String password) {
    System.out.println("Signup with Username: " + username + ", Password: " + password);
}

@DataProvider এর সুবিধা

  • বড় আকারের টেস্ট ডেটা পরিচালনা সহজ।
  • পুনরাবৃত্ত কোডের প্রয়োজনীয়তা কমে।
  • ডেটা-ভিত্তিক টেস্ট কেস তৈরি দ্রুত হয়।
  • কোড রিইউজ করার সুযোগ বাড়ে।

সারাংশ

@DataProvider টেস্টএনজি-র একটি গুরুত্বপূর্ণ ফিচার যা একাধিক ইনপুট ডেটার সাহায্যে একই টেস্ট মেথড চালানোর সুযোগ দেয়। এটি ডেটা ড্রিভেন টেস্টিং সহজতর করে এবং বড় আকারের টেস্টিং প্রজেক্টের জন্য অপরিহার্য।

Content added By
Promotion

Are you sure to start over?

Loading...